package com.wkm.chainchain.pbft.node;

import com.wkm.chainchain.pbft.common.SimulationParameterConst;


public class AllNodeInfo {
    /**
     * 当前P2P网络中节点的数量
     */
    private static final int P2P_NODE_AMOUNT = SimulationParameterConst.NODE_AMOUNT;

    /**
     * P2P网络中的节点列表 通过main初始化获取当前网络中的全部节点的信息
     */
    public static final Node[] P2P_NODE_ARRAYS = new Node[P2P_NODE_AMOUNT];

    private int view;

    /**
     * 可以容忍的最大失效节点的数量f
     * @return
     */
    public static int getMaxFaultNodesAmount() {
        return (SimulationParameterConst.NODE_AMOUNT - 1) / 3;
    }

    /**
     * 最少的正常同意的节点的数量
     * @return
     */
    public static int getLeastAgreeNodesAmount() {
        return 2 * getMaxFaultNodesAmount() + 1;
    }
    /**
     * 获取当前主节点的index
     *
     * @return
     */
    public int getMainNodeIndex() {
        return view % P2P_NODE_AMOUNT;
    }

}
